#ifndef  FIGHTER_MICHAEL_HPP
# define FIGHTER_MICHAEL_HPP

# include "player.hpp"

class FighterMichael : public Player
{
public:
    enum Cooldowns
    {
	CooldownKeyboardThrow = 10,
	CooldownPhase   = 7,
	CooldownShorty  = 10,
	CooldownHacking = 20
    };

    FighterMichael(Shiny::Applejack::World& w, Shiny::Applejack::Body& b, Shiny::Applejack::View*);

    void Victory(bool);
    void GetKicked(int damage, const Attack::Effects&);
    void InterruptChannelling(void);
    void SpellFirst(sf::Event);
    void SpellSecond(sf::Event);
    void SpellThird(sf::Event);
    void SpellUltimate(sf::Event);
    void EndHacking(void);
    void ExecuteHacking(void);
    void Run(void);
    void DisplaySpells();

    void KeyboardDestroy(b2Contact*);

private:
    bool      _isPhased;
    bool      _isShorty;
    bool      _isHacking;

    sf::Clock _cooldownKeyboardThrow;
    sf::Clock _cooldownDephased;
    sf::Clock _cooldownGringalet;
    sf::Clock _cooldownHacking;
    sf::Clock _hackingTime;

    Shiny::Sound _soundHacking;
    Shiny::Sound _soundVictory;

    Attack*      _attackKeyboard;
    bool         _keyboardCanHit;
    Shiny::Applejack::Body* _keyboard;
};

#endif
